<?php
class usuario_model extends CI_Model {

	public function __construct() {
		parent::__construct();
        $this->load->library('uuid');
	}

	public function obtererItem ($id=null) {
		$this->db->select('ID_USUARIO, CODIGO, USER, PASSWORD');
		$this->db->from('usuarios');
		$this->db->where('ID_USUARIO', $id);
		$query = $this->db->get();
		return $query->row();
	}

	public function obtererPorUsuario ($usuario=null) {
		$this->db->select('ID_USUARIO, CODIGO, USER, PASSWORD');
		$this->db->from('usuarios');
		$this->db->where('USER', $usuario);
		$query = $this->db->get();
		return $query->row();
	}

	public function obtererPorCodigo ($codigo=null) {
		$this->db->select('ID_USUARIO, CODIGO, USER, PASSWORD');
		$this->db->from('usuarios');
		$this->db->where('CODIGO', $codigo);
		$query = $this->db->get();
		return $query->row();
	}

	public function existeCodigo ($codigo=null) {
		$this->db->select('count(ID_USUARIO) AS CANTIDAD');
		$this->db->from('usuarios');
		$this->db->where('CODIGO', $codigo);
		$query = $this->db->get();
		return $query->row()->CANTIDAD > 0;
	}

	public function guardar ($id=null, $codigo=null, $usuario=null, $password=null) {
		$data = array(
		   'CODIGO' => $codigo,
		   'USER' => $usuario,
		   'PASSWORD' => $password
		);
		if ($id == null) {
			$this->db->insert('usuarios', $data);
			return $this->db->insert_id();

		} else {
			$this->db->where('ID_USUARIO', $id);
			$this->db->update('usuarios', $data); 
			return $id;
		}
	}
    
    public function generarCodigoUsuario () {
    	$codigo = null;
    	do {
    		$codigo = $this->uuid->v4();
    		$existe = $this->usuario_model->existeCodigo($codigo);
    	} while ($existe);

    	return $codigo;
    }
}
